package com.linchong.helloworld;

/**
 * @BelongsProject:springboothelloworld
 * @BelongsPackage:com.linchong.helloworld
 * @Author:linchong
 * @CreateTime:2018-08-11 19:41
 * @Description:SpringBoot启动类
 */

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.ArrayList;
import java.util.List;

/**
 * Sping Boot 启动类：使用@SpringBootApplication指定这是一个SpringBoot应用程序
 */

//@SpringBootApplication
//public class App extends WebMvcConfigurerAdapter {
//
//    @Override
//    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//        super.configureMessageConverters(converters);
//
//        /**
//         * 1.需要先定义一个convert转换消息对象
//         * 2.添加fastJson的配置信息，如：是否要格式化返回的Json数据
//         * 3.在convert中添加配置信息
//         * 4.将convert添加到converts中
//         */
//
//
//        //1.需要先定义一个convert转换消息对象
//        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//        //2.添加fastJson的配置信息，如：是否要格式化返回的Json数据
//        FastJsonConfig fastJsonConfig = new FastJsonConfig();
//        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//        //3.在convert中添加配置信息
//        fastConverter.setFastJsonConfig(fastJsonConfig);
//
//        //处理中文乱码问题
//        List<MediaType> fastMediaTypes = new ArrayList<>();
//        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
//        fastConverter.setSupportedMediaTypes(fastMediaTypes);
//        fastConverter.setFastJsonConfig(fastJsonConfig);
//        //4.将convert添加到converts中
//        converters.add(fastConverter);
//    }

//  main方法中启动应用程序
//  @param args
//
//public static void main(String[] args){
//        System.out.println("Hello Spring Boot !");
//        SpringApplication.run(App.class,args);
//        }
//}
@SpringBootApplication
public class App {

    /**
     * 使用@Bean注入FastJsonHttpMessageConvert
     * @return
     */
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters(){

        //1.需要先定义一个convert转换消息对象
       FastJsonHttpMessageConverter fastConverter= new FastJsonHttpMessageConverter();

        //2.添加fastJson的配置信息，如：是否要格式化返回的Json数据
       FastJsonConfig fastJsonConfig = new FastJsonConfig();
       fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //3.在convert中添加配置信息
       fastConverter.setFastJsonConfig(fastJsonConfig);

        //处理中文乱码问题
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastConverter.setSupportedMediaTypes(fastMediaTypes);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        //4.将convert添加到converts中
       HttpMessageConverter<?> converter = fastConverter;
       return new HttpMessageConverters(converter);

    }


    /**
     * main方法中启动应用程序
     * @param args
     */
    public static void main(String[] args){
        System.out.println("Hello Spring Boot !");
        SpringApplication.run(App.class,args);
    }
}
